<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>GCC Development Plan</title>
<link rel="stylesheet" type="text/css" href="https://gcc.gnu.org/gcc.css" />
</head>

<body>

<h1>GCC Development Plan</h1>

<p>(Suggestions for changes to this plan are discussed on the
<a href="mailto:gcc@gcc.gnu.org">GCC mailing list</a> and approved or
rejected by the <a href="steering.html">GCC Steering Committee</a>.)</p>


<h2>Objectives</h2>

<p>The goals of this policy are:</p>

<ol>
<li>Higher-quality releases</li>
<li>Support for more targets</li>
<li>Continued encouragement of major infrastructure improvements</li>
<li>More predictable release schedules</li>
<li>More frequent releases</li>
</ol>

<p><strong>Rationale</strong></p>

<p>Late in the GCC 2.x series and then GCC 3.x we struggled making
consistent, high-quality releases for as wide a variety of targets
as we would have liked.  GCC 3.0 came late relative to original
scheduling estimates and the time between the GCC 2.95 and GCC 3.0
releases was longer than everyone would have liked.</p>

<p>We think that more frequent releases on a consistent schedule
serve our user communities better.  In addition, a consistent schedule
makes it possible for Release Managers to better understand what they
are signing up for.</p>


<h2>Development Methodology</h2>


<h3>Branches</h3>

<p>The development of major changes shall be done on a branch.  (Under
some circumstances, development may be done in a private development
tree, but the Steering Committee strongly encourages the use of a
branch in the publicly accessible GCC development tree.)</p>

<p>Examples of major changes include:</p>

<ul>
<li>A new C++ parser</li>
<li>A new memory allocation scheme for internal use in the compiler</li>
<li>A new optimization pass</li>
</ul>

<p>There is no firm guideline for what constitutes a "major change"
and what does not.  If a developer is unsure, they should ask for
guidance on the GCC mailing lists.  In general, a change that has the
potential to be extremely destabilizing should be done on a branch.</p>

<p>Changes may be merged from a development branch only after:</p>

<ul>
<li>They meet the standards for any other check-in.  For example, the
code must be well-documented, and any user-visible changes, including
command-line options, should be documented in the manual.</li>

<li>The branch has been validated on three different targets, each
targeting a different microprocessor family.  Validation should
consist of bootstrapping the compiler (unless that is impossible for
the microprocessor selected) and checking that there are no new
regression test failures.  It is acceptable to <a
href="simtest-howto.html">use a simulator</a> for
validation; the use of real hardware is not required.</li>
</ul>

<p><strong>Rationale</strong></p>

<p>Making major improvements to the compiler is good.  However, such
changes are inevitably somewhat destabilizing.  By using a branch, it
is possible for people to test and improve the code, but without
impacting other developers.  By testing major changes more thoroughly
than ordinary changes, we will help reduce the impact on other
developers.</p>

<p>In addition, the presence of half-finished projects on the mainline
presents a variety of problems when preparing for a release.  If
serious bugs remain, it may be impossible to do a release until the
bugs are fixed, thereby impacting the release schedule.  If
functionality is present, but not robust (for example, command-line
options that activate an optimization pass that does not work very
well), then we can seriously confuse users.</p>


<h3>Schedule</h3>

<p>Development on our main branch will proceed in three stages.</p>

<h4 id="stage1">Stage 1</h4>

<p>During this period, changes of any nature may be made to the
compiler.  In particular, major changes may be merged from branches.
Stage 1 is feature driven and will last at least four months.
In order to avoid chaos, the Release Managers will ask for a list of
major projects proposed for the coming release cycle before the start
of this stage.  They will attempt to sequence the projects
in such a way as to cause minimal disruption.  The Release Managers
will not reject projects that will be ready for inclusion before the
end of Stage 1.  Similarly, the Release Managers have no special
power to accept a particular patch or branch beyond what their status
as maintainers affords.  The role of the Release Managers is merely
to attempt to order the inclusion of major features in an organized
manner.</p>

<h4 id="stage2">Stage 2</h4>

<p>Stage 2 has been abandoned in favor of an extended feature driven
Stage 1 since the development of GCC 4.4.</p>

<h4 id="stage3">Stage 3</h4>

<p>During this two-month period, the only (non-documentation) changes
that may be made are changes that fix bugs or new ports which do not
require changes to other parts of the compiler.
New functionality may not be introduced during this period.</p>

<h4 id="stage4">Stage 4</h4>

<p>During this period, the only (non-documentation) changes that may
be made are changes that fix regressions.  Other important bugs
like wrong-code, rejects-valid or build issues may be fixed as well.
All changes during this period should be done with extra care on
not introducing new regressions - fixing bugs at all cost is not
wanted.  Note that the same constraints apply to release branches.
This period lasts until stage 1 opens for the next release.</p>

<p><strong>Rationale</strong></p>

<p>In order to produce releases on a regular schedule, we must ensure
that the mainline is reasonably stable some time before we make the
release.  Therefore, more radical changes must be made earlier in the
cycle, so that we have time to fix any problems that result.</p>

<p>In order to reach higher standards of quality, we must focus on
fixing bugs; by working exclusively on bug-fixing through this stage
and before branching for the release, we will have a higher quality
source base as we prepare for a release.</p>

<p>Although maintaining a development branch, including merging new
changes from the mainline, is somewhat burdensome, the absolute worst
case is that such a branch will have to be maintained for a few months.
During this period, the only mainline changes will be bug-fixes,
so it is unlikely that many conflicts will occur.</p>


<h3 id="reversion">Patch Reversion</h3>

<p>If a patch is committed which introduces a regression on any target
which the Steering Committee considers to be important and if:</p>

<ul>
<li>the problem is reported to the original poster;</li>
<li>48 hours pass without the original poster or any other party
    indicating that a fix will be forthcoming in the very near future;</li>
<li>two people with write privileges to the affected area of the compiler
    determine that the best course of action is to revert the patch;</li>
</ul>

<p>then they may revert the patch.</p>

<p>(The list of important targets will be revised at the beginning of each
release cycle, if necessary, and is part of the release criteria.)</p>

<p>After the patch has been reverted, the poster may appeal the
decision to the Steering Committee.</p>

<p>Note that no distinction is made between patches which are
themselves buggy and patches that expose latent bugs elsewhere in
the compiler.</p>

<p><strong>Rationale</strong></p>

<p>If an important platform is broken, then it will be difficult to
prepare a release.  If nobody volunteers to fix the problem, then we
will have an unpleasant choice: delay the release, or release a
compiler that we know to be worse than the previous release.
Therefore, it is important that we be able to revert patches that
cause problems.  In addition, regressions on the mainline can impede
the development of other improvements.</p>

<p>On the other hand, we want to encourage new development, and new
development inevitably introduces new bugs.  Therefore, it is
important that decisions be made on a case-by-case basis, and that the
proponent of a change have an opportunity to argue that the benefits
of the change outweigh the costs.  Therefore, the decision to revert
requires two consenting parties, and such decisions may be appealed to
the Steering Committee.  However, during the appeal, the mainline will
remain working, to avoid impeding other development.</p>


<h2 id="release">Release Methodology</h2>


<h3>Schedule</h3>

<p>At the conclusion of Stage 3, the trunk will go into release
branch mode which allows documentation and regression fixes only.
During this phase, the focus will be fixing any regressions
from the previous release, so that each release is better than the one
before.</p>

<p>At the point the trunk is in a state suitable for releasing
a release branch will be created, a release candidate is made available
and Stage 1 of the next release cycle starts.
The decision on when this point is reached is up to the Release Managers.
In particular at this point no P1 regressions are present on the trunk.</p>

<p><strong>Rationale</strong></p>

<p>While making releases on schedule is important, quality should not
be subordinate to schedule.  If a major platform is not adequately
supported, but was well supported in a previous release, then we
should address the problems.  Presumably, this will not be unduly
difficult, since we will have spent at least two months fixing bugs by the
time the release would occur.</p>


<h3>Bug-fix Releases</h3>

<p>Bug-fix releases will be made two and four months after the initial
release, as necessary.</p>

<p><strong>Rationale</strong></p>

<p>By waiting for two months to make a bug-fix release, we will be
able to accumulate fixes for the most important problems, and avoid
spending undue amounts of time on release testing and packaging.</p>

<h4>Changes Appropriate for Bug-Fix Releases</h4>

<p>As a general rule of thumb, bug-fix releases should contain fixes
for regressions or serious bugs uncovered in the corresponding major
release of GCC or those prior to it.  When backporting patches from
subsequent releases or from trunk, care should be taken to avoid
making changes that cause previously accepted code to be rejected
unless doing so would cause GCC to generate incorrect object code
or code with undefined behavior.</p>

<p><strong>Rationale</strong></p>
<p>Users have an expectation of upgrading to a bug-fix GCC release
without having to adjust their source code.  Avoiding changes that
reject code that was previously accepted makes this possible.</p>

<h3 id="num_scheme">Version Numbering Scheme for GCC 5 and Up</h3>

<p>Starting with GCC 5 we will bump the major version number for
each release.  The version number and DEV-PHASE will develop in the following
way and on the following timeline:</p>
<table>
  <tr><th>Version</th><th>DEV-PHASE</th><th>When</th></tr>
  <tr><td>5.0.0</td><td>(experimental)</td>
      <td>during active development of GCC 5 (stage 1 to 3)</td></tr>
  <tr><td>5.0.1</td><td>(experimental)</td>
      <td>during the stabilization period of GCC 5 (stage 4)</td></tr>
  <tr><td>5.0.1</td><td>(prerelease)</td>
      <td>after branching for the release of GCC 5.1</td></tr>
  <tr><td>6.0.0</td><td>(experimental)</td>
      <td>during active development of GCC 6 (stage 1 to 3)</td></tr>
  <tr><td>5.1.0</td><td></td>
      <td>for the first release from the GCC 5 branch</td></tr>
  <tr><td>5.1.1</td><td></td>
      <td>during development on the branch post the 5.1.0 release</td></tr>
  <tr><td>5.2.0</td><td></td>
      <td>for the second release from the GCC 5 branch</td></tr>
  <tr><td>5.2.1</td><td></td>
      <td>during development on the branch post the 5.2.0 release</td></tr>
  <tr><td>6.0.1</td><td>(experimental)</td>
      <td>during the stabilization period of GCC 6 (stage 4)</td></tr>
  <tr><td>...</td><td></td><td></td></tr>
</table>
<p>To summarize, the first release of GCC 5 will be GCC 5.1.0 while
development snapshots will be GCC 5.0.0 or GCC 5.0.1 and snapshots from the
release branch GCC 5.n.1.</p>

<p><strong>Rationale</strong></p>

<p>This change allows to more easily identify GCC versions by giving
each of the development phases distinctive versions.  The change
also takes advantage of the fact that previously the GCC major
number carried little to no useful information.</p>


<h3 id="timeline">Release Timeline</h3>

<p>Here is a history of recent and a <em>tentative</em> timeline of upcoming
stages of development, branch points, and releases:</p>

<pre>

  ... former releases ...
       |
       +-- GCC 3.0 branch created ------+
       |              (Feb 12 2001)      \
       |                                  v
       v                                   GCC 3.0 release (Jun 18 2001)
  New development plan announced            \
       |              (Jul 18 2001)          v
       |                                   GCC 3.0.1 release (Aug 20 2001)
       |                                       \
       v                                        v
  GCC 3.1 Stage 1 (ended Oct 15 2001)      GCC 3.0.2 release (Oct 25 2001)
       |                                          \
       v                                           v
  GCC 3.1 Stage 2 (ended Dec 19 2001)      GCC 3.0.3 release (Dec 20 2001)
       |                                             \
       v                                              v
  GCC 3.1 Stage 3 (ended Feb 26 2002)      GCC 3.0.4 release (Feb 20 2002)
       |
       +-- GCC 3.1 branch created ------+
       |                                 \
       |                                  v
       v                                   GCC 3.1 release (May 15 2002)
  GCC 3.2 Stage 1 (ended Jun 22 2002)       \
       |                                     v
       |                                   GCC 3.1.1 release (Jul 25 2002)
       |                                       \
       v                                        v
  New development plan announced           Branch renamed to GCC 3.2 to
       |              (Jul 14 2002)        accommodate for C++ ABI fixes
       |                                   (C++ binary incompatible with
       |                                   GCC 3.1, see release info)
       |                                             \
       |                                              v
       |                                   GCC 3.2 release (Aug 14 2002)
       |                                                \
       |                                                 v
       |                                   GCC 3.2.1 release (Nov 19 2002)
       |                                                   \
       |                                                    v
       |                                   GCC 3.2.2 release (Feb 05 2003)
       |                                                      \
       |                                                       v
       |                                   GCC 3.2.3 release (April 22 2003)
       v
  GCC 3.3 Stage 2 (ends Aug 15 2002)
       |
       v
  GCC 3.3 Stage 3 (ends Oct 15 2002)
       |
       +-- GCC 3.3 branch created ------+
       |            (Dec 14 2002)        \
       |                                  v
       |                                   GCC 3.3 release (May 13 2003)
       |                                    \
       v                                     v
  GCC 3.4 Stage 1 (ends July 4 2003)       GCC 3.3.1 release (Aug 8 2003)
       |                                       \
       v                                        v
  GCC 3.4 Stage 2 (ends October 15 2003)   GCC 3.3.2 release (Oct 17 2003)
       |                                          \
       v                                           v
  GCC 3.4 Stage 3                          GCC 3.3.3 release (Feb 14 2004)
       |                                             \
       |                                              v
       |                                   GCC 3.3.4 release (May 31 2004)
       |                                                \
       |                                                 v
       |                                   GCC 3.3.5 release (Sep 30 2004)
       |                                                   \
       |                                                    v
       |                                   GCC 3.3.6 release (May 03 2005)
       |
       +-- GCC 3.4 branch created ------+
       |            (Jan 16 2004)        \
       |                                  v
  Tree SSA infrastructure                  GCC 3.4.0 release (Apr 18 2004)
  merged to mainline (May 17 2004)          \
       |                                     v
       v                                   GCC 3.4.1 release (Jul 1 2004)
  GCC 4.0 Stage 2                              \
       |                                        v
       v                                   GCC 3.4.2 release (Sep 6 2004)
  GCC 4.0 Stage 3                                 \
       |                                           v
       |                                   GCC 3.4.3 release (Nov 4 2004)
       |                                             \
       |                                              v
       |                                   GCC 3.4.4 release (May 18 2005)
       |                                                \
       |                                                 v
       |                                   GCC 3.4.5 release (Nov 30 2005)
       |                                                   \
       |                                                    v
       |                                   GCC 3.4.6 release (Mar 06 2006)
       |
       +-- GCC 4.0 branch created ------+
       |            (Feb 25 2005)        \
       v                                  v
  GCC 4.1 Stage 1 (ends April 25 2005)     GCC 4.0.0 release (Apr 20 2005)
       |                                    \
       v                                     v
  GCC 4.1 Stage 2 (ends July 8 2005)       GCC 4.0.1 release (Jul 7 2005)
       |                                       \
       v                                        v
  GCC 4.1 Stage 3                          GCC 4.0.2 release (Sep 28 2005)
       |                                          \
       |                                           v
       |                                   GCC 4.0.3 release (Mar 10 2006)
       |                                             \
       |                                              v
       |                                   GCC 4.0.4 release (Jan 31 2007)
       |
       +-- GCC 4.1 branch created ------+
       |            (Nov 18 2005)        \
       v                                  v
  GCC 4.2 Stage 1 (ends Jan 18 2006)       GCC 4.1.0 release (Feb 28 2006)
       |                                    \
       v                                     v
  GCC 4.2 Stage 2 (ends Mar 18 2006)       GCC 4.1.1 release (May 24 2006)
       |                                       \
       v                                        v
  GCC 4.2 Stage 3                          GCC 4.1.2 release (Feb 13 2007)
       |
       |
       +-- GCC 4.2 branch created ------+
       |                                 \
       v                                  v
  GCC 4.3 Stage 1 (starts 2006-10-20)      GCC 4.2.0 release (2007-05-13)
       |                                    \
       v                                     v
  GCC 4.3 Stage 2 (starts 2007-01-20)      GCC 4.2.1 release (2007-07-18)
       |                                       \
       v                                        v
  GCC 4.3 Stage 3 (starts 2007-09-12)      GCC 4.2.2 release (2007-10-07)
       |                                          \
       |                                           v
       |                                   GCC 4.2.3 release (2008-02-01)
       |                                             \
       |                                              v
       |                                   GCC 4.2.4 release (2008-05-19)
       |
       |
       +-- GCC 4.3 branch created ------+
       |                                 \
       v                                  v
  GCC 4.4 Stage 1 (starts 2008-02-18)      GCC 4.3.0 release (2008-03-05)
       |                                    \
       |                                     v
       |                                   GCC 4.3.1 release (2008-06-06)
       |                                       \
       |                                        v
       v                                   GCC 4.3.2 release (2008-08-27)
  GCC 4.4 Stage 3 (starts 2008-09-01)             \
       |                                           v
       |                                   GCC 4.3.3 release (2009-01-24)
       |                                             \
       |                                              v
       |                                   GCC 4.3.4 release (2009-08-04)
       |                                                \
       |                                                 v
       |                                   GCC 4.3.5 release (2010-05-22)
       |                                                   \
       |                                                    v
       |                                   GCC 4.3.6 release (2011-06-27)
       |
       +-- GCC 4.4 branch created ------+
       |                                 \
       v                                  v
  GCC 4.5 Stage 1 (starts 2009-03-27)      GCC 4.4.0 release (2009-04-21)
       |                                    \
       |                                     v
       |                                   GCC 4.4.1 release (2009-07-22)
  GCC 4.5 Stage 3 (starts 2009-10-01)          \
       |                                        v
       |                                   GCC 4.4.2 release (2009-10-15)
       |                                          \
       |                                           v
       |                                   GCC 4.4.3 release (2010-01-21)
       |                                             \
       |                                              v
       |                                   GCC 4.4.4 release (2010-04-29)
       |                                                \
       |                                                 v
       |                                   GCC 4.4.5 release (2010-10-01)
       |                                                   \
       |                                                    v
       |                                   GCC 4.4.6 release (2011-04-16)
       |                                                      \
       |                                                       v
       |                                   GCC 4.4.7 release (2012-03-13)
       |
       +-- GCC 4.5 branch created ------+
       |                                 \
       v                                  v
  GCC 4.6 Stage 1 (starts 2010-04-06)      GCC 4.5.0 release (2010-04-14)
       |                                    \
       |                                     v
       |                                   GCC 4.5.1 release (2010-07-31)
  GCC 4.6 Stage 3 (starts 2010-11-03)          \
       |                                        v
       |                                   GCC 4.5.2 release (2010-12-16)
       |                                          \
       |                                           v
       |                                   GCC 4.5.3 release (2011-04-28)
       |                                             \
       |                                              v
       |                                   GCC 4.5.4 release (2012-07-02)
       |
       +-- GCC 4.6 branch created ------+
       |                                 \
       v                                  v
  GCC 4.7 Stage 1 (starts 2011-03-14)      GCC 4.6.0 release (2011-03-25)
       |                                    \
       |                                     v
       |                                   GCC 4.6.1 release (2011-06-27)
       |                                       \
       |                                        v
       |                                   GCC 4.6.2 release (2011-10-26)
  GCC 4.7 Stage 3 (starts 2011-11-08)             \
       |                                           v
       |                                   GCC 4.6.3 release (2012-03-01)
       |                                             \
       |                                              v
       |                                   GCC 4.6.4 release (2013-04-12)
       |
       +-- GCC 4.7 branch created ------+
       |                                 \
       v                                  v
  GCC 4.8 Stage 1 (starts 2012-03-02)      GCC 4.7.0 release (2012-03-22)
       |                                    \
       |                                     v
       |                                   GCC 4.7.1 release (2012-06-14)
       |                                       \
       |                                        v
       |                                   GCC 4.7.2 release (2012-09-20)
  GCC 4.8 Stage 3 (starts 2012-11-06)             \
       |                                           v
       |                                   GCC 4.7.3 release (2013-04-11)
       |                                             \
       |                                              v
       |                                   GCC 4.7.4 release (2014-06-12)
       |
       +-- GCC 4.8 branch created ------+
       |                                 \
       v                                  v
  GCC 4.9 Stage 1 (starts 2013-03-16)      GCC 4.8.0 release (2013-03-22)
       |                                    \
       |                                     v
       |                                   GCC 4.8.1 release (2013-05-31)
       |                                       \
       |                                        v
       |                                   GCC 4.8.2 release (2013-10-16)
       |                                          \
  GCC 4.9 Stage 3 (starts 2013-11-22)              v
       |                                   GCC 4.8.3 release (2014-05-22)
       |                                             \
       |                                              v
       |                                   GCC 4.8.4 release (2014-12-19)
       |                                                \
       |                                                 v
       |                                   GCC 4.8.5 release (2015-06-23)
       +-- GCC 4.9 branch created ------+
       |                                 \
       v                                  v
  GCC 4.10 Stage 1 (starts 2014-04-11)     GCC 4.9.0 release (2014-04-22)
       |                                    \
       |                                     v
       |                                   GCC 4.9.1 release (2014-07-16)
  New GCC versioning scheme announced          \
       |                  (2014-08-13)          v
       |                                   GCC 4.9.2 release (2014-10-30)
       |                                          \
  GCC 5 Stage 1                                    v
       |                                   GCC 4.9.3 release (2015-06-26)
  GCC 5 Stage 3 (starts 2014-11-16)                  \
       |                                              v
  GCC 5 Stage 4 (starts 2015-01-17)        GCC 4.9.4 release (2016-08-03)
       |
       +-- GCC 5 branch created --------+
       |                                 \
       v                                  v
  GCC 6 Stage 1 (starts 2015-04-12)        GCC 5.1 release (2015-04-22)
       |                                    \
       |                                     v
       |                                   GCC 5.2 release (2015-07-16)
  GCC 6 Stage 3 (starts 2015-11-15)            \
       |                                        v
  GCC 6 Stage 4 (starts 2016-01-20)        GCC 5.3 release (2015-12-04)
       |                                          \
       |                                           v
       |                                   GCC 5.4 release (2016-06-03)
       |                                             \
       |                                              v
       |                                   GCC 5.5 release (2017-10-10)
       +-- GCC 6 branch created --------+
       |                                 \
       v                                  v
  GCC 7 Stage 1 (starts 2016-04-15)        GCC 6.1 release (2016-04-27)
       |                                    \
       |                                     v
       |                                   GCC 6.2 release (2016-08-22)
  GCC 7 Stage 3 (starts 2016-11-14)            \
       |                                        v
       |                                   GCC 6.3 release (2016-12-21)
  GCC 7 Stage 4 (starts 2017-01-20)               \
       |                                           v
       |                                   GCC 6.4 release (2017-07-04)
       |                                             \
       |                                              v
       |                                   GCC 6.5 release (2018-10-26)
       +-- GCC 7 branch created --------+
       |                                 \
       |                                  v
  GCC 8 Stage 1 (starts 2017-04-20)        GCC 7.1 release (2017-05-02)
       |                                    \
       |                                     v
       |                                   GCC 7.2 release (2017-08-14)
  GCC 8 Stage 3 (starts 2017-11-18)            \
       |                                        v
  GCC 8 Stage 4 (starts 2018-01-15)        GCC 7.3 release (2018-01-25)
       |                                          \
       |                                           v
       |                                   GCC 7.4 release (2018-12-06)
       |                                            \
       |                                             v
       |                                   GCC 7.5 release (2019-11-14)
       +-- GCC 8 branch created --------+
       |                                 \
       |                                  v
  GCC 9 Stage 1 (starts 2018-04-25)        GCC 8.1 release (2018-05-02)
       |                                    \
       |                                     v
       |                                   GCC 8.2 release (2018-07-26)
  GCC 9 Stage 3 (starts 2018-11-12)            \
       |                                        v
  GCC 9 Stage 4 (starts 2019-01-07)        GCC 8.3 release (2019-02-22)
       |                                          \
       |                                           v
       |                                   GCC 8.4 release (2020-03-04)
       |                                            \
       |                                             v
       |                                   GCC 8.5 release (2021-05-14)
       +-- GCC 9 branch created --------+
       |                                 \
       |                                  v
  GCC 10 Stage 1 (starts 2019-04-25)       GCC 9.1 release (2019-05-03)
       |                                    \
       |                                     v
       |                                   GCC 9.2 release (2019-08-12)
  GCC 10 Stage 3 (starts 2019-11-17)           \
       |                                        v
  GCC 10 Stage 4 (starts 2020-01-13)       GCC 9.3 release (2020-03-12)
       |                                          \
       |                                           v
       |                                   GCC 9.4 release (2021-06-01)
       |                                            \
       |                                             v
       |                                   GCC 9.5 release (2022-05-27)
       +-- GCC 10 branch created -------+
       |                                 \
       |                                  v
  GCC 11 Stage 1 (starts 2020-04-30)       GCC 10.1 release (2020-05-07)
       |                                   \
       |                                    v
       |                                   GCC 10.2 release (2020-06-23)
  GCC 11 Stage 3 (starts 2020-11-16)         \
       |                                      v
  GCC 11 Stage 4 (starts 2021-01-17)       GCC 10.3 release (2021-04-08)
       |                                          \
       |                                           v
       |                                   GCC 10.4 release (2022-06-28)
       +-- GCC 11 branch created -------+
       |                                 \
       |                                  v
  GCC 12 Stage 1 (starts 2021-04-20)       GCC 11.1 release (2021-04-27)
       |                                   \
       |                                    v
       |                                   GCC 11.2 release (2021-07-28)
  GCC 12 Stage 3 (starts 2021-11-15)         \
       |                                      v
  GCC 12 Stage 4 (starts 2022-01-17)       GCC 11.3 release (2022-04-21)
       |
       +-- GCC 12 branch created -------+
       |                                 \
       |                                  v
  GCC 13 Stage 1 (starts 2022-04-28)       GCC 12.1 release (2022-05-06)
       |
       v
</pre>

</body>
</html>
